package swimv2gm.bl.util;

import java.util.Date;

import swimv2gm.bl.domain.WorkRequestStatus;

/**
 * Versione ridotta dei dati di una richiesta di lavoro, usata negli elenchi per
 * evitare di passare tutti i dati quando non necessario. Al contrario delle
 * richieste di lavoro complete, quest'oggetto contiene i dati di un solo
 * utente, mittente o destinatario, da usarsi a seconda del contesto. Questa
 * classe non rappresenta alcun oggetto nella base di dati.
 * 
 * @author Gallesio Matteo
 */
public class WorkRequestData implements java.io.Serializable {
	private static final long serialVersionUID = 3808393491035998746L;

	private long id;

	private String userName;
	private long userId;

	private Date timestamp;

	private WorkRequestStatus stato;

	/**
	 * Crea un nuovo oggetto WorkRequestData a partire dai dati forniti. Data la
	 * presenza del campo userId, se la richiesta è ricevuta è una richiesta
	 * interna.
	 * 
	 * @param id
	 *            l'id della richiesta
	 * @param timestamp
	 *            la data di invio della richiesta
	 * @param stato
	 *            lo stato della richiesta
	 * @param userId
	 *            l'id del mittente o del destinatario
	 * @param userName
	 *            il nome del mittente o del destinatario
	 */
	public WorkRequestData(long id,Date timestamp,WorkRequestStatus stato,long userId,String userName) {
		this.init(id,timestamp,stato,userName);
		this.userId = userId;
	}

	/**
	 * Crea un nuovo oggetto WorkRequestData a partire dai dati forniti. Data
	 * l'assenza del campo userId, la richiesta rapprsentata dev'essere esterna.
	 * 
	 * @param id
	 *            l'id della richiesta
	 * @param timestamp
	 *            la data di invio della richiesta
	 * @param stato
	 *            lo stato della richiesta
	 * @param userName
	 *            il contatto del mittente
	 */
	public WorkRequestData(long id,Date timestamp,WorkRequestStatus stato,String userName) {
		this.init(id,timestamp,stato,userName);
		this.userId = -1;
	}

	private void init(long id,Date timestamp,WorkRequestStatus stato,String userName) {
		this.id = id;
		this.userName = userName;
		this.timestamp = timestamp;
		this.stato = stato;
	}

	public long getId() {
		return id;
	}

	public Date getTimestamp() {
		return timestamp;
	}

	public WorkRequestStatus getStato() {
		return stato;
	}

	public String getUserName() {
		return userName;
	}

	public long getUserId() {
		return userId;
	}
}
